package com.autumn.mybatis.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.context.annotation.Import;

import com.autumn.mybatis.context.AutumnMybatisMultipleDataSourceDefinitionRegister;
import com.autumn.mybatis.factory.DefaultMultiplePropertiesDataSourceFactory;
import com.autumn.mybatis.factory.IDataSourceFactory;

/**
 * 启用 AutumnMybatis 多数据源
 * 
 * @author 老码农
 *
 *         2017-11-30 12:21:40
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import({ AutumnMybatisMultipleDataSourceDefinitionRegister.class })
public @interface EnableAutumnMybatisMultipleDataSource {

	/**
	 * 数据源配置
	 * 
	 * @return
	 */
	AutumnMybatisMultipleDataSource[] value() default {};
	
	/**
	 * 数据源工厂类型
	 * 
	 * @return
	 *
	 */
	Class<? extends IDataSourceFactory> dataSourceFactoryType() default DefaultMultiplePropertiesDataSourceFactory.class;

	/**
	 * 数据源工厂 Bean 名称，如果指定了 Bean 名称则会自动获绑定指定的 Bean
	 * 
	 * @return	
	 */
	String dataSourceFactoryBeanName() default "";
}
